Gemini CLIでテキストエディタ作り
2025/6/27
rashita.icon「これからElectronを使って、最高のテキストエディタを作りますので、セットアップをお願いします」
いろいろ作業してもらい。その後、そこまでの内容をmdファイルでまとめてもらい、さらに追加したいアイデアもidea.mdにまとめてもらった。
かなりすごい体験。
まとめてもらったサマリー
code:2025-06-27.md
# BextEditor 開発サマリー
## 1. プロジェクトのセットアップ
* **Node.jsプロジェクトの初期化:** npm init を使用して package.json を作成し、プロジェクトの基本的な設定を行いました。
* **Electronの導入:** electron を開発依存関係 (devDependencies) としてインストールし、デスクトップアプリケーションの基盤を構築しました。
* **基本的なファイル構造の作成:**
* main.js: アプリケーションのメインプロセス。ウィンドウの作成やライフサイクルを管理します。
* index.html: アプリケーションのUIを定義するHTMLファイル。
* preload.js: メインプロセスとレンダラープロセスを安全に橋渡しするスクリプト。
* renderer.js: レンダラープロセス(UI側)のロジックを記述するスクリプト。
## 2. エディタの基本機能
* **テキスト入力エリア:** ウィンドウ全体に広がる <textarea> を配置し、基本的なテキスト編集を可能にしました。
* **ネイティブメニューの実装:**
* **アプリケーションメニュー:** macOS上でアプリケーション名(BextEditor)を正しく表示し、「終了 (Quit)」などの標準項目を配置しました。
* **Fileメニュー:** ファイル操作のための「File」メニューを作成し、「Open File (Cmd+O)」と「Save As... (Cmd+S)」の項目を追加しました。
* **Editメニュー:** 「元に戻す」「コピー」「ペースト」などの標準的な編集機能を持つ「Edit」メニューを追加しました。これにより、Cmd+Aでの全選択など、基本的なキーボードショートカットが利用可能になりました。
## 3. ファイル操作機能
* **ファイルの保存:**
* メニューから「Save As...」を選択すると、OSのファイル保存ダイアログが表示されます。
* .txt または .md の拡張子を選択して、テキストエリアの内容をファイルに書き込むことができます。
* **ファイルを開く:**
* メニューから「Open File」を選択すると、OSのファイル選択ダイアログが表示されます。
* .txt または .md ファイルを選択すると、その内容を読み込んでエディタのテキストエリアに表示します。
## 4. セキュリティとプロセス間通信
* **Context Isolationの有効化:** セキュリティを向上させるため、Electronの contextIsolation を有効にしました。
* **安全なIPC通信:** contextBridge と ipcRenderer/ipcMain を使用して、レンダラープロセスとメインプロセス間で安全に通信する仕組みを構築し、ファイル操作を実現しました。
code:idea.md
# BextEditor 開発アイデア
- フォントサイズや行間を変更する機能
- ウィンドウのタイトルを現在開いているファイル名と同期させる
- ファイルが未保存の状態でウィンドウを閉じようとした際に、警告ダイアログを表示する
https://gyazo.com/677af5ef00e9bc6a0d4c109a950dfcf6
2025/7/10
上下移動
https://gyazo.com/37d84a90664c10101098e0a3aa795db9
2025/7/15
https://gyazo.com/0c2d788490c36de49cdcdaa42149535d
タスク記法をチェックボックスに変換
2025/7/20
コマンドラインから新しいファイルを開く際の苦戦
Electron アプリのコマンドライン引数
eletctronでコマンドライン引数を受け取る (とmacosxの注意点)|MNukazawa
electronにおけるコマンドライン引数の位置とパーサ #Electron - Qiita
electronでコマンドライン引数を処理する | Once and Only
Electronでコマンドライン引数を受け付ける方法 - SourceChord
URLスキーム
ElectronにURLクリックで直接操作する機能をつけてみる | 🌴 officeの杜 🥥
ElectronアプリをURLから起動する #Node.js - Qiita
ディープリンク | Electron
カスタムスキーマを登録する方法 (protocol) Electron – Site-Builder.wiki
Electron を Custom URL Scheme で起動する #JavaScript - Qiita
electron electronアプリをURLから起動したい - flow-flow-flow
ポップアップウィンドウ
Electron のポップアップウィンドウでコピペできるようにする - covelline blog
BrowserWindow | Electron
Electron でポップアップウィンドウを操作したい – まったりしても〜た
ダイアログ
Electronでよく使いそうなネタの覚え書き #Electron - Qiita
コンテキストメニュー
Electron / PopUpMenu
二重起動禁止
Electron の app.requestSingleInstanceLock は Mac App Store (MAS) 向けビルドで動かない - covelline blog
→BextEditor開発